package ar.fiuba.tp7552.buildadmin.model.builds;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.HashSet;

import ar.fiuba.tp7552.buildadmin.model.BaseEntity;
import ar.fiuba.tp7552.buildadmin.model.BusinessException;
import ar.fiuba.tp7552.buildadmin.model.expensas.TipoExpensa;
import ar.fiuba.tp7552.buildadmin.model.gastos.Prorrateo;

public class TipoPropiedad extends BaseEntity {
	
	private String nombre;
	private Double divisor;
	private BigDecimal expensasOrdinarias;
	private BigDecimal expensasExtraordinarias;
	private Collection<Prorrateo> prorrateos = new HashSet<Prorrateo>();
	private Collection<Propiedad> propiedades = new HashSet<Propiedad>();
	private Edificio edificio;
	
	public BigDecimal getMontoExpensa(TipoExpensa tipoExpensa) throws BusinessException{
		
		switch(tipoExpensa) {
			case ORDINARIA:
				if (expensasOrdinarias == null) {
					throw new BusinessException("Debe asignar el monto de expensa ordinaria para el tipo de propiedad: "+nombre+" ");
				}
				return expensasOrdinarias;
			case EXTRAORDINARIA:
				if (expensasOrdinarias == null) {
					throw new BusinessException("Debe asignar el monto de expensa extraordinaria para el tipo de propiedad: "+nombre+" ");
				}
				return expensasExtraordinarias;
			default:
				throw new BusinessException("Se debe indicar el tipo de expensas");			
		}
	}
	
	
	//~~ getters y setters ===========================================================
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public Double getDivisor() {
		return divisor;
	}
	public void setDivisor(Double divisor) {
		this.divisor = divisor;
	}
	public BigDecimal getExpensasOrdinarias() {
		return expensasOrdinarias;
	}
	public void setExpensasOrdinarias(BigDecimal expensasOrdinarias) {
		this.expensasOrdinarias = expensasOrdinarias;
	}
	public BigDecimal getExpensasExtraordinarias() {
		return expensasExtraordinarias;
	}
	public void setExpensasExtraordinarias(BigDecimal expensasExtraordinarias) {
		this.expensasExtraordinarias = expensasExtraordinarias;
	}
	public Collection<Prorrateo> getProrrateos() {
		return prorrateos;
	}
	public void setProrrateos(Collection<Prorrateo> prorrateos) {
		this.prorrateos = prorrateos;
	}
	public Edificio getEdificio() {
		return edificio;
	}
	public void setEdificio(Edificio edificio) {
		this.edificio = edificio;
	}
	public Collection<Propiedad> getPropiedades() {
		return propiedades;
	}
	public void setPropiedades(Collection<Propiedad> propiedades) {
		this.propiedades = propiedades;
	}

}
